#include<stdio.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<unistd.h>
#include<string.h>

int main()
{
  int fd = open("myfile", O_RDONLY);
 
  if(fd < 0)
  {
    perror("open");
    return 1;
  }
  
  const char *msg = "hello bit!\n";
  char buf[1024];
 
  while(1)
  {
    ssize_t s = read(fd, buf, strlen(msg));//参数类似于write
    if(s > 0)
    {
      printf("%s", buf);
    }
    else
    {
      break;
    }
  }
  
  close(fd);
  return 0;
}


//int main()
//{
//  umask(0);
//  int fd = open("myfile", O_WRONLY | O_CREAT, 0644);
// 
//  if(fd < 0)
//  {
//    perror("open");
//    return 1;
//  }
//  
//  int count = 5;
//  const char *msg = "hello bit!\n";
//  int len = strlen(msg);
//  while(count--)
//  {
//    write(fd, msg, len);
//    //fd:open返回值，文件描述符，即向哪里写入     
//    //msg：缓冲区地址，即写入谁 
//    //len: 本次读取，期望写多少个字节的数据。
//    //返回值：实际写了多少字节数据 
//  }
//  close(fd);
//  return 0;
//}


//int main()
//{
//    //打印标准输入，输出，错误流的文件描述符
//    printf("stdin: %d\n", stdin->_fileno);
//    printf("stdout: %d\n", stdout->_fileno);
//    printf("stderr: %d\n", stderr->_fileno);
//
//    //打印自己打开的文件的文件描述符
//    FILE* fp = fopen("log.txt", "w");
//    printf("fp: %d\n", fp->_fileno);
//
//  return 0;
//}


//int main()
//{
//    //直接使用文件描述符读取键盘输入内容
//    char buffer[128];
//    ssize_t s = read(0, buffer, sizeof(buffer));
//    if(s > 0)
//    {
//        buffer[s-1] = 0;
//        printf("%s\n", buffer);
//    }
//    
//    //直接使用文件描述符向显示器输出内容
//    const char *message = "hello write\n";
//    write(1, message, strlen(message));  
//
//  return 0;
//}



//#define ONE (1<<0)
//#define TWO (1<<1)
//#define THREE (1<<2)
//#define FOUR (1<<3)
//#define FIVE (1<<4)
//
//void PrintTest(int flags)
//{
//    if(flags & ONE)
//    {
//        printf("one\n");
//    }
//    if(flags & TWO)
//    {
//        printf("two\n");
//    }
//    if(flags & THREE)
//    {
//        printf("three\n");
//    }
//    if(flags & FOUR)
//    {
//        printf("four\n");
//    }
//    if(flags & FIVE)
//    {
//        printf("five\n");
//    }
//}
//
//int main()
//{
//    printf("===========================\n");
//    PrintTest(ONE);
//    printf("===========================\n");
//    PrintTest(TWO);
//    printf("===========================\n");
//    PrintTest(THREE);
//    printf("===========================\n");
//    PrintTest(ONE | THREE);
//    printf("===========================\n");
//    PrintTest(ONE | TWO | THREE);
//    printf("===========================\n");
//    PrintTest(ONE | TWO | THREE | FOUR);
//    printf("===========================\n");
//    return 0;
//}
